//        class MyArray<T>
    class MyArray<E extends Number>{
//            E：一定是Number或者Number的子集
//            泛型的上界
}

//       写一个泛型类，求数组中最大值
    class Alg<T extends Comparable<T>>{
//  泛型的上界，实现比较的接口，就不会报错了
    public T findMaxVal(T[] array){
        T max = array[0];
        for (int i = 0; i < array.length; i++) {
//          if报错原因：引用数据类型不能直接通过大于等于号进行比较
            if (array[i].compareTo(max) > 0){
                max = array[i];
            }
        }
        return max;
    }
}

    class Person implements Comparable<Person>{
        //    重写方法
        @Override
        public int compareTo(Person o) {
            return 0;
        }
    }

public class Main {
    public static void main(String[] args) {
        Integer[] array = {1,2,3,4,5};
        Alg<Integer> alg = new Alg<>();
        System.out.println(alg.findMaxVal(array));

        Alg<Person> alg1 = new Alg<>();
    }
}